#include <stdio.h>
#include <stdlib.h>

struct st
{
    int a, b;
    double f;
} s, *ps;

/*
“指针”类型: 指针数据类型声明的变量代表指向另一个数据类型变量的存储首地址
注意这句话：指向另一个数据类型变量的存储首地址。

构造语法
    声明-初始化：存储类型 数据类型* 指针名；指针名=变量地址；
    直接初始化: 存储类型 数据类型* 指针名=变量地址；
“int* p = &a”。
    显然，称p为指针变量（存放的是变量的首地址），
    而不是称*p为指针变量（*p代表指针指向的地址单元所存放的值）
*/

// 系统不管是何种数据类型的指针，一律分配4字节，
// 即各种类型的指针所占内存的大小是一样的。
int main()
{
    double a = 6.8;
    double *pd = &a;

    float b = 6.5;
    float *pf = &b;

    char c = 'G';
    char *pc = &c;

    int *p = NULL;

    printf("%d %d %d %d\n", sizeof(pd), sizeof(pc), sizeof(p), sizeof(ps));
    system("pause");
    return 0;
}